package com.ysx.controller;

import com.itheima.constant.MessageConstant;
import com.itheima.entity.PageResult;
import com.itheima.entity.QueryPageBean;
import com.itheima.entity.Result;
import com.itheima.health.pojo.CheckItem;
import com.ysx.service.CheckItemsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;

import java.util.List;


@RestController//方法返回的值为它本身的意思 并不会走视图解析器
@RequestMapping("/checkitem")//一级路径
public class CheckItemController {
    @Autowired
    private CheckItemsService checkItemsService;
    /**
     * 新增检查项
     * @param checkItem
     * @return
     */
    @PreAuthorize("hasAuthority('CHECKITEM_ADD')")
    @RequestMapping("/add")
    public Result add(@RequestBody CheckItem checkItem) {
        System.out.println("获得请求参数："+checkItem);
        //调用service方法 返回结果
        int add = checkItemsService.add(checkItem);
        //根据不同的结果 封装数据
        if(add>0){
          return    new Result(true, MessageConstant.ADD_CHECKGROUP_SUCCESS);
        }else {
          return   new Result(false, MessageConstant.ADD_CHECKGROUP_SUCCESS);
        }
    }


    /**
     * 分页查询数据 因为接受的参数为json格式的 可以使用@RequestBody来接受
     */
    @RequestMapping("/findPage")
    public Result findPage(@RequestBody QueryPageBean queryPageBean) {
//        打印接受参数
        System.out.println("queryPageBean"+queryPageBean);
//        调用servcie层 返回封装的对象
      PageResult<CheckItem> pageResult=checkItemsService.findPage(queryPageBean);
//        PageResult<CheckItem> pageResult=null;
//        判断对象是否为null
        System.out.println("service层返回结果为："+pageResult);
        Result result=null;
        if(pageResult!=null){
            result=new Result(true,MessageConstant.QUERY_CHECKITEM_SUCCESS,pageResult);
        }else {
            result=new Result(false,MessageConstant.QUERY_CHECKITEM_FAIL);
        }
        return result;
    }

    /**
     * 删除检查项
     */
    @PreAuthorize("hasAuthority('CHECKITEM_DELETE')")
    @GetMapping("/delete")
    public Result delete(@RequestParam Integer id) {
        System.out.println("获得浏览器携带的参数:"+id);
//        调用service层 返回受影响的行数
      int delete=  checkItemsService.delete(id);
//        根据受影响的行数封装不同的数据
        Result result = null;
        if(delete>0){
           result= new Result(true,MessageConstant.DELETE_CHECKITEM_SUCCESS);
        }else {
            result= new Result(false,MessageConstant.DELETE_CHECKITEM_FAIL);
        }
        return result;
    }

    /**
     * 更新检查项
     */
    @PreAuthorize("hasAuthority('CHECKITEM_EDIT')")
    @PostMapping("/update")
    public Result update(@RequestBody CheckItem checkItem) {
        System.out.println("接受到前端的数据对象："+checkItem);
//        调用service层 传入checkItem对象 返回一个受影响的结果
       int update= checkItemsService.update(checkItem);
//       根据返回结果封装数据
        Result result=null;
        if(update>0){
            result=new Result(true,MessageConstant.EDIT_CHECKGROUP_SUCCESS);
        }else {
            result=new Result(false,MessageConstant.EDIT_CHECKGROUP_FAIL);
        }
        return  result;
    }

    /**
     * 查询CheckItem表中的所有数据 展示到checkgroup检查项
     */
    @RequestMapping("/findAll")
    public Result findAll() {

//        调用service层 返回一个集合 封装CheckItem对象
        List<CheckItem> items=checkItemsService.findAll();
        System.out.println("调用service返回的结果为：" + items);
//         判断返回结果是否为Null
        Result result=null;
        if(items!=null){
            result=new Result(true,MessageConstant.QUERY_CHECKITEM_SUCCESS,items);
        }
        else {
            result=new Result(false,MessageConstant.QUERY_CHECKITEM_SUCCESS);
        }
        return result;
    }










}
